package Link;

public class leet_19 {
}

class Solution_19 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null){
            return null;
        }
        /**
         * 完成去除倒数第几个链表，说明需要知道前一个节点
         * 第一个节点没办法，人工创造一个节点
          */
        ListNode result = new ListNode(-1);
        result.next = head;
        // 上一个节点
        ListNode prev = result;
        while(prev.next!=null){
            // 当前节点
            // 讨论这个结点是不是倒数结点
            ListNode curr = prev.next;
            // 需要一个临时结点来进行回退操作
            ListNode tmpNOde = curr;
            int num = n;
            while(num>0){
                tmpNOde = tmpNOde.next;
                num--;
            }
            // 说明这个结点就是倒数第 n 个结点
            if(tmpNOde==null){
                prev.next = curr.next;
                // 判断完就跳出循环
                break;
            }
            prev=prev.next;
        }
        return result.next;
    }
}

